import { lazy } from "react";
import { RouteConfig } from "../types";
import ApiDemo from "@/examples/ApiDemo";

// 图标映射，可以根据组件名或路径添加特定图标
const iconMap: Record<string, string> = {
  ZustandPage: "🔄",
  UserStorePage: "👤",
  // 可以在这里添加更多组件的图标映射
  default: "📚", // 默认图标
};

// 组件标题映射
const titleMap: Record<string, string> = {
  ZustandPage: "Zustand 状态管理",
  UserStorePage: "用户状态管理",
  AntdDemo: "Ant Design 示例",
  ApiDemo: "API 请求示例",
  TooltipDemo: "提示气泡组件",
  ModalDemo: "模态对话框组件",
  IconDemo: "图标系统",
  SystemInfoDemo: "系统环境信息",
  UserAvatarDemo: "用户头像组件",
  AvatarGroupDemo: "团队成员头像组",
  OrganizationTreeDemo: "组织树选择器",
  StringUtilDemo: "字符串工具函数",
  FormDemo: "表单组件示例",
  TableDemo: "表格组件示例",
  ChartDemo: "数据可视化图表",
  NotificationDemo: "通知提醒组件",
  UploadDemo: "文件上传组件",
  DragDropDemo: "拖拽功能示例",
  AnimationDemo: "动画效果示例",
  ThemeDemo: "主题定制与切换",
  LayoutDemo: "页面布局示例",
  TreeViewDemo: "树形控件",

  // 可以在这里添加更多组件的标题映射
};

// 组件权限配置
const authMap: Record<string, boolean> = {
  UserStorePage: false, // false表示不需要登录
  default: true, // 默认需要登录
};

// 组件顺序配置
const orderMap: Record<string, number> = {
  ZustandPage: 16,
  UserStorePage: 17,
  // 其他组件顺序配置
};

// 使用Vite的import.meta.glob代替webpack的require.context
const modules = import.meta.glob("../../examples/*.tsx");

// 生成路由配置
const exampleRoutes: RouteConfig[] = Object.keys(modules).map((path) => {
  // 从文件路径提取组件名称
  const componentName =
    path
      .split("/")
      .pop()
      ?.replace(/\.tsx$/, "") || "";

  // 转换为kebab-case的路径
  const routePath = componentName
    .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
    .toLowerCase();

  // 使用Vite的动态导入方式
  const Component = lazy(modules[path] as () => Promise<any>);

  return {
    path: routePath,
    component: Component,
    meta: {
      title: titleMap[componentName] || componentName,
      icon: iconMap[componentName] || iconMap.default,
      requiresAuth:
        authMap[componentName] !== undefined
          ? authMap[componentName]
          : authMap.default,
      exact: true,
      order: orderMap[componentName] || 50, // 默认顺序值
      isExample: true, // 标记为示例页面
    },
  };
});

export default exampleRoutes;
